#The __mro__ attribute
SortedIntList.__mro__ 

class A: 
    def func(self): 
        return 'A.func'

class B(A): 
    def func(self): 
        return 'B.func'

class C(A): 
    def func(self): 
        return 'C.func'

class D(B, C): pass

D.__mro__
d = D()
d.func() 

class D(C, B): pass

D.__mro__
d = D()
d.func() 


#The MRO for SortedIntList
SortedIntList.__mro__ 

#Inconsistent MROs
class A: pass 

class B(A): pass 

class C(A): pass

class D(B, A, C): pass


#class-bound proxies
SortedIntList.__mro__ 
super(SortedList, SortedIntList)
super(SortedList, SortedIntList).add


#Class-bound proxies and methods
super(SortedList, SortedIntList).add(4) 
super(SortedIntList, SortedIntList)._validate(5) 
super(SortedIntList, SortedIntList)._validate('hello') 
super(int, IntList) 


#Instance-bound proxies
SortedIntList.__mro__
sil = SortedIntList([5, 15, 10]) 
sil 
super(SortedList, sil) 
super(SortedList, sil).add(6) 
super(SortedList, sil).add('I am not a number! I am a free man!')
sil 